package first

/*
	输入一棵二叉树的根节点，求该树的深度。从根节点到叶节点依次经过的节点（含根、叶节点）形成树的一条路径，最长路径的长度为树的深度。

	例如：

	给定二叉树 [3,9,20,null,null,15,7]，

		3
	   / \
	  9  20
		/  \
	   15   7
	返回它的最大深度3 。

	提示：

	节点总数 <= 10000
	注意：本题与主站 104题相同：https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/

	来源：力扣（LeetCode）
	链接：https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof
	著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
*/

func MaxDepth(root *TreeNode) int {
	return maxDepth(root)
}
func maxDepth(root *TreeNode) int {
	if nil == root {
		return 0
	}
	maxD := 0
	preorderToDepth(root, 0, &maxD)
	return maxD
}

func preorderToDepth(root *TreeNode, height int, maxd *int) {
	if nil == root {
		*maxd = max(*maxd, height)
		return
	}
	height++
	preorderToDepth(root.Left, height, maxd)
	preorderToDepth(root.Right, height, maxd)
}
